import type { AxiosResponse } from 'axios'

/** 文件名提取函数 */
export function extractFilename(response: AxiosResponse): string | null {
  const CONTENT_DISPOSITION = response.headers['content-disposition']
  if (!CONTENT_DISPOSITION) return null
  const match = CONTENT_DISPOSITION.match(/filename="([^"]+)"/)
  if (match && match[1]) return decodeURIComponent(match[1])
  return null
}

/** 一个利用 a 标签下载文件的函数 */
export function linkDownload(fileURL: string | Blob | File, fileName?: string): void {
  let href: string = typeof fileURL === 'string' ? fileURL : URL.createObjectURL(fileURL)
  const a = document.createElement('a')
  a.style.display = 'none'
  a.href = href
  a.download = fileName || Date.now().toString()
  document.body.appendChild(a)
  a.click()
  document.body.removeChild(a)
  if (typeof fileURL !== 'string') URL.revokeObjectURL(href)
}
